home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d18 / dvunit.arc / DESQVIEW.PAS next >
Pascal/Delphi Source File  |  1990-09-17  |  2KB  |  84 lines

  1. { This unit adds support for the DESQview" multi-tasking enviroment
  2.   By Joel Bergen  last revised: 9/17/90  }
  3.  
  4. {$A+,B-,D+,E+,F-,I+,L+,N-,O+,R+,S+,V+}
  5. {$M 1024,0,0}
  6.  
  7. UNIT DESQview;
  8.  
  9. INTERFACE
  10.  
  11. USES DOS;
  12.  
  13. VAR
  14.   Dv_Loaded  : BOOLEAN; {True if running under DESQview                  }
  15.   Dv_Version : WORD;    {DESQview" version number                        }
  16.                         {Returns "0" if DESQview" is not loaded.         }
  17.                         {Use:                                            }
  18.                         {WRITELN(Hi(Dv_Version)+Lo(Dv_Version)/100:4:2); }
  19.                         {to display the version of "Desqview" correctly. }
  20.  
  21.  
  22. FUNCTION  Dv_There : BOOLEAN;     {True if Desqview loaded. Sets Dv_Version}
  23. PROCEDURE Dv_Pause;               {Give up the rest of our timeslice}
  24. PROCEDURE Dv_Begin_Critical;      {Turn switching off for time critical ops}
  25. PROCEDURE Dv_End_Critical;        {Turn switching back on}
  26. FUNCTION  Dv_Video_Buffer : WORD; {returns address of video buffer}
  27.  
  28. IMPLEMENTATION
  29.  
  30. VAR
  31.   Reg : REGISTERS;
  32.  
  33. FUNCTION Dv_There;
  34. BEGIN
  35.   Reg.CX:=$4445;
  36.   Reg.DX:=$5351;
  37.   Reg.AX:=$2B01;
  38.   INTR($21,Reg);
  39.   Dv_Loaded:=(Reg.AL<>$0FF);
  40.   IF Dv_Loaded THEN Dv_Version:=Reg.BX ELSE Dv_Version:=0;
  41.   Dv_There:=Dv_Loaded;
  42. END;
  43.  
  44. PROCEDURE Dv_Pause;
  45. BEGIN
  46.   IF DV_Loaded THEN BEGIN
  47.     Reg.AX:=$1000;
  48.     INTR($15,Reg);
  49.   END;
  50. END;
  51.  
  52. PROCEDURE Dv_Begin_Critical;
  53. BEGIN
  54.   IF DV_Loaded THEN BEGIN
  55.     Reg.AX:=$101B;
  56.     INTR($15,Reg);
  57.   END;
  58. END;
  59.  
  60. PROCEDURE Dv_End_Critical;
  61. BEGIN
  62.   IF DV_Loaded THEN BEGIN
  63.     Reg.AX:=$101C;
  64.     INTR($15,Reg);
  65.   END;
  66. END;
  67.  
  68. FUNCTION DV_Video_Buffer;
  69. BEGIN
  70.   Reg.AH:=$0F;
  71.   INTR($10,Reg);
  72.   IF Reg.AL=7 THEN Reg.ES:=$B000 ELSE Reg.ES:=$B800;
  73.   IF DV_Loaded THEN BEGIN
  74.     Reg.DI:=0;
  75.     Reg.AX:=$FE00;
  76.     INTR($10,Reg);
  77.   END;
  78.   DV_Video_Buffer:=Reg.ES;
  79. END;
  80.  
  81. BEGIN { Checks to see if desqview is loaded at startup. }
  82.   Dv_Loaded:=Dv_There;
  83. END.
  84.